package com.pokermind.model.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 玩家行为数据响应DTO
 * 简化的德州扑克行为数据，用于大模型决策
 * 
 * @author PokerMind Team
 */
public class PlayerBehaviorResponse {
    
    @JsonProperty("player_id")
    private Long playerId;
    
    @JsonProperty("player_name")
    private String playerName;
    
    @JsonProperty("total_hands")
    private Integer totalHands;
    
    @JsonProperty("vpip_rate")
    private BigDecimal vpipRate; // 入池率 (%)
    
    @JsonProperty("aggression_level")
    private String aggressionLevel; // 进攻性：高、中、低
    
    @JsonProperty("win_rate")
    private BigDecimal winRate; // 胜率 (%)
    
    @JsonProperty("playing_style")
    private String playingStyle; // 玩牌风格：紧凶、松凶、紧弱、松弱
    
    @JsonProperty("recent_form")
    private String recentForm; // 最近状态：正常、上头、下头
    
    @JsonProperty("data_reliable")
    private Boolean dataReliable; // 数据是否可靠（样本足够）
    
    @JsonProperty("last_updated")
    private LocalDateTime lastUpdated;
    
    // 构造函数
    public PlayerBehaviorResponse() {}
    
    public PlayerBehaviorResponse(Long playerId, String playerName) {
        this.playerId = playerId;
        this.playerName = playerName;
        this.lastUpdated = LocalDateTime.now();
    }
    
    // Getters and Setters
    public Long getPlayerId() {
        return playerId;
    }
    
    public void setPlayerId(Long playerId) {
        this.playerId = playerId;
    }
    
    public String getPlayerName() {
        return playerName;
    }
    
    public void setPlayerName(String playerName) {
        this.playerName = playerName;
    }
    
    public Integer getTotalHands() {
        return totalHands;
    }
    
    public void setTotalHands(Integer totalHands) {
        this.totalHands = totalHands;
    }
    
    public BigDecimal getVpipRate() {
        return vpipRate;
    }
    
    public void setVpipRate(BigDecimal vpipRate) {
        this.vpipRate = vpipRate;
    }
    
    public String getAggressionLevel() {
        return aggressionLevel;
    }
    
    public void setAggressionLevel(String aggressionLevel) {
        this.aggressionLevel = aggressionLevel;
    }
    
    public BigDecimal getWinRate() {
        return winRate;
    }
    
    public void setWinRate(BigDecimal winRate) {
        this.winRate = winRate;
    }
    
    public String getPlayingStyle() {
        return playingStyle;
    }
    
    public void setPlayingStyle(String playingStyle) {
        this.playingStyle = playingStyle;
    }
    
    public String getRecentForm() {
        return recentForm;
    }
    
    public void setRecentForm(String recentForm) {
        this.recentForm = recentForm;
    }
    
    public Boolean getDataReliable() {
        return dataReliable;
    }
    
    public void setDataReliable(Boolean dataReliable) {
        this.dataReliable = dataReliable;
    }
    
    public LocalDateTime getLastUpdated() {
        return lastUpdated;
    }
    
    public void setLastUpdated(LocalDateTime lastUpdated) {
        this.lastUpdated = lastUpdated;
    }
    
    @Override
    public String toString() {
        return "PlayerBehaviorResponse{" +
                "playerId=" + playerId +
                ", playerName='" + playerName + '\'' +
                ", totalHands=" + totalHands +
                ", vpipRate=" + vpipRate +
                ", aggressionLevel='" + aggressionLevel + '\'' +
                ", winRate=" + winRate +
                ", playingStyle='" + playingStyle + '\'' +
                ", recentForm='" + recentForm + '\'' +
                ", dataReliable=" + dataReliable +
                '}';
    }
}
